package com.bjsxt.userscenter.users.pojo;

import java.util.Date;

import com.alibaba.fastjson.JSONObject;
import com.bjsxt.userscenter.common.util.DateFormatUtil;
import com.bjsxt.userscenter.system.pojo.ARegion;

/**
 * 用户的POJO
 * 
 * @author wangshSxt
 *
 */
public class AUsers
{
	private int id;
	private int regionId ; 
	private String email;
	private String password;
	private String phone;
	private String qq;
	private String address;
	private int loginFailedCount;
	private Date loginFailedTime;
	private String photoPath;
	private byte emailStatus;
	private byte phoneStatus;
	private byte status;
	private Date createTime;
	private Date updateTime;
	private Date lastLoginTime;
	
	/* 字符串描述 */
	private String statusStr ;
	private String emailStatusStr ; 
	private String phoneStatusStr ; 
	
	/* 关联对象 */
	private AUsersExtend usersExtend ; 
	private ARegion region ; 

	public int getId()
	{
		return id;
	}

	public void setId(int id)
	{
		this.id = id;
	}

	public String getEmail()
	{
		return email;
	}

	public void setEmail(String email)
	{
		this.email = email;
	}

	public String getPassword()
	{
		return password;
	}

	public void setPassword(String password)
	{
		this.password = password;
	}

	public String getPhone()
	{
		return phone;
	}

	public void setPhone(String phone)
	{
		this.phone = phone;
	}

	public String getQq()
	{
		return qq;
	}

	public void setQq(String qq)
	{
		this.qq = qq;
	}

	public String getAddress()
	{
		return address;
	}

	public void setAddress(String address)
	{
		this.address = address;
	}

	public int getLoginFailedCount()
	{
		return loginFailedCount;
	}

	public void setLoginFailedCount(int loginFailedCount)
	{
		this.loginFailedCount = loginFailedCount;
	}

	public Date getLoginFailedTime()
	{
		return loginFailedTime;
	}

	public void setLoginFailedTime(Date loginFailedTime)
	{
		this.loginFailedTime = loginFailedTime;
	}

	public String getPhotoPath()
	{
		return photoPath;
	}

	public void setPhotoPath(String photoPath)
	{
		this.photoPath = photoPath;
	}

	public byte getEmailStatus()
	{
		return emailStatus;
	}

	public void setEmailStatus(byte emailStatus)
	{
		this.emailStatus = emailStatus;
	}

	public byte getPhoneStatus()
	{
		return phoneStatus;
	}

	public void setPhoneStatus(byte phoneStatus)
	{
		this.phoneStatus = phoneStatus;
	}

	public byte getStatus()
	{
		return status;
	}

	public void setStatus(byte status)
	{
		this.status = status;
	}

	public Date getCreateTime()
	{
		return createTime;
	}

	public void setCreateTime(Date createTime)
	{
		this.createTime = createTime;
	}

	public Date getUpdateTime()
	{
		return updateTime;
	}

	public void setUpdateTime(Date updateTime)
	{
		this.updateTime = updateTime;
	}

	public Date getLastLoginTime()
	{
		return lastLoginTime;
	}

	public void setLastLoginTime(Date lastLoginTime)
	{
		this.lastLoginTime = lastLoginTime;
	}

	public AUsersExtend getUsersExtend()
	{
		return usersExtend;
	}

	public void setUsersExtend(AUsersExtend usersExtend)
	{
		this.usersExtend = usersExtend;
	}
	
	public JSONObject toJSON()
	{
		DateFormatUtil dateFormatUtil = new DateFormatUtil();
		/* 存储到Token的容器中,值为管理员对应的JSON信息 */
		JSONObject adminsJSON = new JSONObject();
		/* 存储管理员对象可开放的字段 */
		adminsJSON.put("id", this.getId());
		adminsJSON.put("email", this.getEmail());
		adminsJSON.put("trueName", this.getEmail());
		adminsJSON.put("createTime", dateFormatUtil.format(this.getCreateTime()));
		adminsJSON.put("updateTime", dateFormatUtil.format(this.getUpdateTime()));
		adminsJSON.put("lastLoginTime", dateFormatUtil.format(this.getLastLoginTime()));
		return adminsJSON ; 
	}

	public String getStatusStr()
	{
		/*
		 * 状态:0:禁用;1:启用
		 * */
		AUsersEnum[] usersEnums = AUsersEnum.values();
		for (int i = 0; i < usersEnums.length; i++)
		{
			AUsersEnum usersEnum = usersEnums[i];
			if(usersEnum.toString().startsWith("STATUS_"))
			{
				/* 如果循环的枚举==数据库存储的状态值,赋值枚举指定的字符串 */
				if(usersEnum.getStatus() == this.status)
				{
					this.statusStr = usersEnum.getInfo();
					break ; 
				}
			}
		}
		return statusStr;
	}
	
	public String getEmailStatusStr()
	{
		/*
		 * 邮箱状态:0:未验证;1:已验证;
		 * */
		AUsersEnum[] usersEnums = AUsersEnum.values();
		for (int i = 0; i < usersEnums.length; i++)
		{
			AUsersEnum usersEnum = usersEnums[i];
			if(usersEnum.toString().startsWith("EMAILSTATUS_"))
			{
				/* 如果循环的枚举==数据库存储的状态值,赋值枚举指定的字符串 */
				if(usersEnum.getStatus() == this.emailStatus)
				{
					this.emailStatusStr = usersEnum.getInfo();
					break ; 
				}
			}
		}
		return this.emailStatusStr;
	}
	
	public String getPhoneStatusStr()
	{
		/*
		 * 邮箱状态:0:未验证;1:已验证;
		 * */
		AUsersEnum[] usersEnums = AUsersEnum.values();
		for (int i = 0; i < usersEnums.length; i++)
		{
			AUsersEnum usersEnum = usersEnums[i];
			if(usersEnum.toString().startsWith("PHONESTATUS"))
			{
				/* 如果循环的枚举==数据库存储的状态值,赋值枚举指定的字符串 */
				if(usersEnum.getStatus() == this.phoneStatus)
				{
					this.phoneStatusStr = usersEnum.getInfo();
					break ; 
				}
			}
		}
		return this.phoneStatusStr;
	}

	public int getRegionId()
	{
		return regionId;
	}

	public void setRegionId(int regionId)
	{
		this.regionId = regionId;
	}

	public ARegion getRegion()
	{
		return region;
	}

	public void setRegion(ARegion region)
	{
		this.region = region;
	}
}
